Signal processing generally refers to the performance of real-time operations on a data stream. Accordingly, typical signal processing applications include or occur in telecommunications, image processing, speech processing and generation, spectrum analysis and audio processing and filtering. In each of these applications, the data stream is generally continuous. Thus, the signal processor must produce results, "through-put", at the maximum rate of the data stream.
Conventionally, both analog and digital systems have been utilized to perform many signal processing functions. Analog signal processors, though typically capable of supporting higher through-put rates, are generally limited in terms of their long term accuracy and the complexity of the functions that they can perform. In addition, analog signal processing systems are typically quite inflexible once constructed and, therefore, best suited only to the singular application anticipated in their initial design.
A digital signal processor provides the opportunity for enhanced accuracy and flexibility in the performance of operations that are very difficult, if not impractically complex, to perform in an analog system. Additionally, digital signal processor systems typically offer a greater degree of post-construction flexibility than their analog counterparts, thereby permitting more functionally extensive modifications to be made for subsequent utilization in a wider variety of applications. Consequently, digital signal processing is preferred in many applications.
The process of digital signal processing typically implements a numeric algorithmic operation performed on a digital data stream sampled over time. The end result of the algorithmic operation, depending on the nature of the algorithm, can readily provide for the modification or analysis of the digital data stream or for the generation of a new data stream based on some aspect of the original data stream input. Central to the implementation of such algorithmic operations are the use of numeric algorithms for performing differential equation solving, fast Fourier transforms (FFT), auto-correlation and digital filtering, among many others. A numeric Fourier equation solving algorithm generally takes the form of: EQU y(n)=ax(n)+bx(n-1)+cx(n-2),
where y(n) is the current output and x(n-k) is the current input at a time k previous (k=0, 1, 2, 3 . . . ). Discrete or digital Fourier transforms, of the form: ##EQU1## where k=0, 1, 2, 3, . . . (n-1) with X(k) being the discrete transform of a digitally sampled signal Y(n), are easier to implement numerically.
Alternately, decimation in time or frequency can be utilized to obtain substantially the same information. A decimation in time numeric algorithm generally takes the form of: EQU X=A+WB EQU Y=A-WB,
where A and B are of a time series of inputs represented as complex numbers, W is a decimation function and X and Y are decimated outputs. The decimation in time and frequency algorithms have the advantage of reduced numbers of multiplications and accumulations and the convenience of being executable within the same memory space that originally stores a series segment of the digital data stream being operated on.
A numeric implementation of the auto-correlation function is defined as: ##EQU2## where R(k) is the kth auto-correlation co-efficient and x(n) is the nth data sample.
Finally, a numeric digital filtering function may be generally defined as: ##EQU3## where Y(n) is the filter output on its nth iteration, A* is the ith filter co-efficient and x(n-i) is the data sample taken as the input at the nth iteration. It is to be recognized that each of these algorithms may require simultaneous access to two data values, or "operands" as they are called, in real-time processing.
Such FFT, autocorrelation and filtering operations typically require simultaneous access to two operands, such as X(n) and X(n+k) in the case of autocorrelation, or A(i) and X(n-i) in the case of filter y(n). In the autocorrelation operation, then, a dual bus DSP makes most efficient use of storage by employing a dual-access random access memory (RAM) in which a single copy of array X is stored and the two array values X(n) and X(n+k) are independently and simultaneously accessed during the nth iteration.
In the filtering operation, on the other hand, there is need to simultaneously access the two separate arrays, A and X, at the nth iteration. In this case, two single-access RAMs provide the most efficient memory device, rather than a dual-port RAM.